﻿namespace JxcLite.Entities;

/// <summary>
/// 业务单据表头信息类。
/// </summary>
public class JxBillHead : EntityBase
{
    /// <summary>
    /// 取得或设置单据类型（进货、进退货、销货、销退货）。
    /// </summary>
    [DisplayName("单据类型")]
    [Required]
    [MaxLength(50)]
    public string Type { get; set; }

    /// <summary>
    /// 取得或设置业务单号。
    /// </summary>
    [DisplayName("业务单号")]
    [Required]
    [MaxLength(50)]
    public string BillNo { get; set; }

    /// <summary>
    /// 取得或设置单证状态。
    /// </summary>
    [DisplayName("单证状态")]
    [Required]
    [MaxLength(50)]
    public string Status { get; set; }

    /// <summary>
    /// 取得或设置单证日期。
    /// </summary>
    [DisplayName("单证日期")]
    [Required]
    public DateTime? BillDate { get; set; }

    /// <summary>
    /// 取得或设置商业伙伴。
    /// </summary>
    [DisplayName("商业伙伴")]
    [Required]
    [MaxLength(100)]
    public string Partner { get; set; }

    /// <summary>
    /// 取得或设置合同号。
    /// </summary>
    [DisplayName("合同号")]
    [MaxLength(50)]
    public string ContractNo { get; set; }

    /// <summary>
    /// 取得或设置发票号。
    /// </summary>
    [DisplayName("发票号")]
    [MaxLength(50)]
    public string InvoiceNo { get; set; }

    /// <summary>
    /// 取得或设置结算方式。
    /// </summary>
    [DisplayName("结算方式")]
    [Required]
    [MaxLength(50)]
    public string SettleMode { get; set; }

    /// <summary>
    /// 取得或设置总金额。
    /// </summary>
    [DisplayName("总金额")]
    public decimal? TotalAmount { get; set; }

    /// <summary>
    /// 取得或设置物流公司。
    /// </summary>
    [DisplayName("物流公司")]
    [MaxLength(100)]
    public string Logistics { get; set; }

    /// <summary>
    /// 取得或设置物流单号。
    /// </summary>
    [DisplayName("物流单号")]
    [MaxLength(50)]
    public string LogisticsNo { get; set; }

    /// <summary>
    /// 取得或设置物流费用。
    /// </summary>
    [DisplayName("物流费用")]
    public decimal? LogisticsFee { get; set; }

    /// <summary>
    /// 取得或设置被退单号。
    /// </summary>
    [DisplayName("被退单号")]
    [MaxLength(50)]
    public string ReturnNo { get; set; }

    /// <summary>
    /// 取得或设置备注。
    /// </summary>
    [DisplayName("备注")]
    public string Note { get; set; }

    /// <summary>
    /// 取得或设置附件。
    /// </summary>
    [DisplayName("附件")]
    [MaxLength(500)]
    public string Files { get; set; }


    /// <summary>
    /// 取得或设置单据商品明细列表。
    /// </summary>
    public virtual List<JxBillList> Lists { get; set; } = [];
}